home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / basebl.arc / BASEBALL.BAS next >
BASIC Source File  |  1987-01-20  |  36KB  |  499 lines

  1. 1 '******** BASEBALL STATKEEPER ********
  2. 2 '******** (C) 1987 BY MICHAEL J. HIMOWITZ ********
  3. 3 '******** 8134 SCOTTS LEVEL ROAD, BALTIMORE MD 21208 **********
  4. 4 '******** CIS ID 71655,1327 -- DELPHI HANDLE MHIMOWITZ ********
  5. 5 CLEAR,&HFE00 : DEF SEG : CLS
  6. 10 KEY OFF:CLEAR,&HFE00:DEF SEG:ON ERROR GOTO 45000:CLS
  7. 20 STARTING.SORT=0
  8. 50 TOP.MENU$=CHR$(201)+STRING$(76,205)+CHR$(187):MID.MENU$=CHR$(204)+STRING$(76,205)+CHR$(185):BOTTOM.MENU$=CHR$(200)+STRING$(76,205)+CHR$(188)
  9. 60 P$="║":NF$="":TEAMFORMAT$=" ## - ":
  10. 70 DISPLAY.LINE$="LAST NAME      FI T   AB HITS  AVG  HR  OBP RUN RBI ERR  BB  SO  1B  2B  3B"
  11. 80 TEAM.LINE$="TEAM             NO.  AB HITS  AVG  HR  OBP RUN RBI ERR  BB  SO  1B  2B  3B":FR2$="##":FR3$="###":FR4$="####":FR5$="#.###":HEADER.LINE$=" "+STRING$(78,"="):WIPE$=STRING$(75,32)
  12. 85 DIM TEAM$(12), TAT.BATS(12), THITS(12), TAVG(12), TRUNS(12),TBB(12), TK(12), TERRORS(12), TOBP(12), THR(12), T1B(12), T2B(12), T3B(12), A%(22), PLAYER.INDEX$(180), CURRENT.INDEX$(180),MENU.OPTION$(10),AA$(180),TRBI(12)
  13. 90 FOR N%=1 TO 9:READ MENU.OPTION$(N%):NEXT
  14. 100 FOR N%=1 TO 12:TEAM$(N%)="------------------":NEXT
  15. 110 FOR I!=0 TO 21:READ A%(I!):NEXT
  16. 120 GOSUB 25000:LSORT=&HFF00
  17. 200 F0=FRE(0):GOSUB 40000:GOSUB 41600:IF SWFLAG=1 THEN GOSUB 24500
  18. 210 TITLE.LINE$="BASEBALL STATKEEPER":GOSUB 40100:LOCATE 3,THISLOC:PRINT TITLE.LINE$;
  19. 220 LOCATE 22,5:PRINT "FILE: "+NF$;:LOCATE 22,25:PRINT "TEAMS: ";:PRINT CURRENT.TEAM;:LOCATE 22,50:PRINT "NUMBER OF PLAYERS: ";:PRINT NUMBER.OF.PLAYER;:
  20. 230 FOR SLOC=7 TO 15:LOCATE SLOC,30:PRINT MENU.OPTION$(SLOC-6):NEXT
  21. 235 LOCATE 16,29:PRINT MENU.OPTION$(10);
  22. 240 LOCATE 18,30:PRINT "YOUR CHOICE _":LOCATE 7,42
  23. 250 CH$=INKEY$:IF CH$="" THEN 250
  24. 255 IF CH$<>"1" AND CH$<>"2" AND CH$<>"9" THEN GOSUB 42300
  25. 260 ON VAL(CH$) GOTO 1000,3000,2000,5000,4000,7000,10000,8000,42500
  26. 270 GOTO 250
  27. 999 '**********  LOAD A FILE  **********
  28. 1000 CLS:BOX$="01010378":GOSUB 41200:TITLE.LINE$="DO YOU WANT TO LOAD A NEW FILE? (Y/N)":GOSUB 40100:LOCATE 2,THISLOC-1:PRINT TITLE.LINE$:GOSUB 41010
  29. 1010 LOCATE 2,2:PRINT WIPE$;:LOCATE 2,15:PRINT "DRIVE ON WHICH FILES ARE STORED (A, B, C OR D)";:GOSUB 42200:CLS:PRINT"THESE ARE YOUR CURRENT FILES: ":PRINT:DR$=DR$+":":FILES DR$+"*.PLY"
  30. 1020 BOX$="22012478":GOSUB 41200:LOCATE 23,5:LINE INPUT;"NAME OF FILE TO LOAD (HIT <RETURN> TO CANCEL THIS FUNCTION): ";NF$:IF NF$="" THEN 200 ELSE NF$=DR$+NF$
  31. 1030 IF LEN(NF$)>10 OR INSTR(NF$,".")>0 THEN PRINT CHR$(7):GOTO 3020
  32. 1040 N%=23:GOSUB 41500:TITLE.LINE$="LOADING "+NF$:LOCATE 23,THISLOC-1:PRINT TITLE.LINE$;
  33. 1050 STARTING.SORT=0:GOSUB 41900
  34. 1060 OPEN NF$+".PDX" FOR INPUT AS 1
  35. 1070 FOR N=1 TO NUMBER.OF.PLAYER:LINE INPUT#1,PLAYER.INDEX$(N):NEXT:
  36. 1080 CLOSE #1:GOSUB 24000:CH$="1":GOSUB 8100:GOSUB 32100:GOTO 200
  37. 1999 '**********  UPDATE A PLAYER  **********
  38. 2000 CLS:BOX$="01010378":GOSUB 41200:TITLE.LINE$="DO YOU WANT TO UPDATE A PLAYER? (Y/N)":GOSUB 40100:LOCATE 2,THISLOC-1:PRINT TITLE.LINE$:GOSUB 41010
  39. 2010 LOCATE 6,5:LINE INPUT"PLAYER'S LAST NAME: ";LASNAME$
  40. 2020 LOCATE 8,5:LINE INPUT"PLAYER'S 1ST  INIT: ";FINIT$:IF LEN(FINIT$)>1 THEN PRINT CHR$(7):N%=8:GOSUB 41500
  41. 2030 SRCH.NAME$=LASNAME$+FINIT$:SRNLEN=LEN(SRCH.NAME$)
  42. 2040 FOR K=1 TO NUMBER.OF.PLAYER
  43. 2050 IF LEFT$(PLAYER.INDEX$(K),SRNLEN)<>SRCH.NAME$ THEN 2400
  44. 2060 ENTRY.LOC=INSTR(PLAYER.INDEX$(K),"/")+2:THIS.NUMBER=VAL(MID$(PLAYER.INDEX$(K),ENTRY.LOC))
  45. 2070 GOSUB 31000
  46. 2080 LOCATE 10,5:PRINT "DO YOU WANT "+FINIT$+" "+EN$+" ON THE "+TEAM$(TM)+" (Y/N)";
  47. 2090 GOSUB 41300
  48. 2100 IF YN$<>"Y" THEN 2400
  49. 2110 CLS:TITLE.LINE$="HERE ARE THE CURRENT STATS":GOSUB 40100:BOX$="01010678":GOSUB 41200:LOCATE 3,1:PRINT MID.MENU$;:LOCATE 2,THISLOC-1:PRINT TITLE.LINE$:LOCATE 4,2:PRINT DISPLAY.LINE$;
  50. 2120 DISROW=5:GOSUB 30200
  51. 2130 GOSUB 30400
  52. 2140 AB=AB+THIS.AB:HIT=HIT+THIS.HIT:IF HIT>0 THEN AVG=HIT/AB ELSE AVG=0
  53. 2150 RBI=RBI+THIS.RBI:HR=HR+THIS.HR:BB=BB+THIS.BB:IF HIT+BB>0 THEN OBP=(HIT+BB)/(AB+BB) ELSE OBP=0
  54. 2160 RN=RN+THIS.RN:ERZ=ERZ+THIS.ERZ:SO=SO+THIS.SO:B1=B1+THIS.B1:B2=B2+THIS.B2:B3=B3+THIS.B3
  55. 2170 N%=2:GOSUB 41500:TITLE.LINE$="UPDATED STATS":GOSUB 40100:LOCATE 2,THISLOC-1:PRINT TITLE.LINE$:N%=5:GOSUB 41500:DISROW=5:GOSUB 30200
  56. 2180 GOSUB 30000:PUT #1,THIS.NUMBER:CLOSE #1
  57. 2190 '**********  UPDATE TEAM STATS FROM PLAYER STATS  **********
  58. 2200 TAT.BATS(TM)=TAT.BATS(TM)+THIS.AB:THITS(TM)=THITS(TM)+THIS.HIT:IF THITS(TM)>0 THEN TAVG(TM)=THITS(TM)/TAT.BATS(TM) ELSE TAVG(TM)=0
  59. 2210 THR(TM)=THR(TM)+THIS.HR:TBB(TM)=TBB(TM)+THIS.BB:IF THITS(TM)+TBB(TM)>0 THEN TOBP(TM)=(THITS(TM)+TBB(TM))/(TAT.BATS(TM)+TBB(TM)) ELSE TOBP(TM)=0
  60. 2220 TRUNS(TM)=TRUNS(TM)+THIS.RN:TERRORS(TM)=TERRORS(TM)+THIS.ERZ:TK(TM)=TK(TM)+THIS.SO:T1B(TM)=T1B(TM)+THIS.B1:T2B(TM)=T2B(TM)+THIS.B2:T3B(TM)=T3B(TM)+THIS.B3
  61. 2230 ZIP$="19012478":GOSUB 52000:BOX$="22012478":GOSUB 41200:TITLE.LINE$="UPDATE ANOTHER PLAYER? (Y/N)":GOSUB 40100:LOCATE 23,THISLOC-1:PRINT TITLE.LINE$;
  62. 2240 GOSUB 41300:IF YN$<>"Y" THEN GOSUB 32000:GOTO 200
  63. 2250 CLS:GOTO 2010
  64. 2400 NEXT K
  65. 2410 CLS:LOCATE 5,5:PRINT "I CAN'T FIND "+FINIT$+" "+LASNAME$+" IN MY RECORDS"
  66. 2420 LOCATE 7,5:PRINT "DO YOU WANT TO TRY AGAIN? (Y/N)":GOSUB 41300
  67. 2430 IF YN$<>"Y" THEN 200 ELSE CLS:GOTO 2010
  68. 2999 '**********  CREATE A NEW FILE  **********
  69. 3000 CLS:BOX$="01010378":GOSUB 41200:TITLE.LINE$="DO YOU WANT TO CREATE A NEW FILE? (Y/N)":GOSUB 40100:LOCATE 2,THISLOC-1:PRINT TITLE.LINE$:GOSUB 41010
  70. 3010 LOCATE 2,2:PRINT WIPE$;:LOCATE 2,15:PRINT "DRIVE FOR THE NEW FILE (A, B, C or D): ";:GOSUB 42200:DR$=DR$+":":CLS:PRINT"THESE ARE YOUR CURRENT FILES: ":PRINT:FILES DR$
  71. 3020 BOX$="22012478":GOSUB 41200:LOCATE 23,2:LINE INPUT;"NAME OF NEW FILE (8 CHARS MAX): ";NF$
  72. 3030 IF LEN(NF$)>8 THEN PRINT CHR$(7):GOTO 3020
  73. 3040 NF$=DR$+NF$:GOTO 200
  74. 3999 '**********  ADD A PLAYER  **********
  75. 4000 GOSUB 40300
  76. 4010 TITLE.LINE$="ADD PLAYER NO"+STR$(NUMBER.OF.PLAYER+1):GOSUB 40100:LOCATE 3,THISLOC-2:PRINT TITLE.LINE$:IF FIRST.FLAG=0 THEN GOSUB 41000
  77. 4020 IF FIRST.FLAG=0 THEN GOSUB 41400
  78. 4030 LOCATE 9,5:INPUT;"LAST NAME (14 CHARS MAX): ";LASNAME$:IF LEN(LASNAME$)>14 THEN PRINT CHR$(7):ZIP$="08051070":GOSUB 52000:GOTO 4030
  79. 4040 LOCATE 11,5:LINE INPUT;"FIRST INIT: ";FINIT$:IF LEN(FINIT$)>1 THEN ZIP$="10051270":GOSUB 52000:PRINT CHR$(7):GOTO 4040
  80. 4050 LOCATE 13,5:LINE INPUT;"TEAM NUMBER: ";TM$:IF VAL(TM$)<1 OR VAL(TM$)>12 THEN ZIP$="12051470":GOSUB 52000:PRINT CHR$(7):GOTO 4050
  81. 4060 LOCATE 15,5:PRINT "IS THIS CORRECT? (Y/N)";:GOSUB 41300
  82. 4070 IF YN$<>"Y" THEN ZIP$="08051670":GOSUB 52000:GOTO 4030
  83. 4080 TM=VAL(TM$):GOSUB 41600
  84. 4090 GOSUB 30000:THIS.RECORD=NUMBER.OF.PLAYER+1:PUT #1,THIS.RECORD:CLOSE #1
  85. 4100 PLAYER.INDEX$(THIS.RECORD)=LASNAME$+FINIT$+"/"+STR$(THIS.RECORD):NUMBER.OF.PLAYER=NUMBER.OF.PLAYER+1
  86. 4110 BOX$="08451065":GOSUB 41200:LOCATE 9,47:PRINT "ADD ANOTHER? (Y/N)";
  87. 4120 GOSUB 41300:IF YN$<>"Y" THEN FIRST.FLAG =0:GOSUB 24000:GOSUB 41700:GOSUB 41800:GOTO 200
  88. 4130 FIRST.FLAG=1:ZIP$="08021576":GOSUB 52000:GOTO 4010
  89. 4999 '**********  ADD TEAMS  **********
  90. 5000 GOSUB 42600 CLS:BOX$="01010378":GOSUB 41200:TITLE.LINE$="DO YOU WANT TO ADD A TEAM? (Y/N)":GOSUB 40100:LOCATE 2,THISLOC-1:PRINT TITLE.LINE$:GOSUB 41010
  91. 5010 GOSUB 42600:N%=2:GOSUB 41500:TITLE.LINE$="ADD TEAM NO. "+STR$(CURRENT.TEAM+1):LOCATE 2,THISLOC+3:PRINT TITLE.LINE$;
  92. 5020 GOSUB 41400
  93. 5030 LOCATE 8,5:PRINT "NAME OF TEAM (18 CHARACTERS MAX.): ";:LINE INPUT TEAM.NAME$:IF LEN(TEAM.NAME$)>18 THEN PRINT CHR$(7):N%=8:GOSUB 41500:GOTO 5030
  94. 5040 LOCATE 10,5:PRINT "IS THIS CORRECT? (Y/N)";:GOSUB 41300:IF YN$<>"Y" THEN ZIP$="08021078":GOSUB 52000:GOTO 5030
  95. 5050 LO$=SPACE$(18):LSET LO$=TEAM.NAME$:TEAM.NAME$=LO$:TEAM$(CURRENT.TEAM+1)=TEAM.NAME$:N%=2:GOSUB 41500:TITLE.LINE$="ADD ANOTHER? (Y/N)":GOSUB 40100:LOCATE 2,THISLOC:PRINT TITLE.LINE$;
  96. 5060 GOSUB 41300:IF YN$="Y" THEN CURRENT.TEAM=CURRENT.TEAM+1:ZIP$="08011278":GOSUB 52000:GOTO 5010
  97. 5070 CURRENT.TEAM=CURRENT.TEAM+1:N%=2:GOSUB 41500:TITLE.LINE$="ONE MOMENT, PLEASE...RECORDING DATA":GOSUB 40100:LOCATE 2,THISLOC-1:PRINT TITLE.LINE$;
  98. 5080 GOSUB 32000
  99. 5090 GOSUB 41800:GOTO 200
  100. 6999 '**********  PLAYER REPORTS  **********
  101. 7000 CLS:GOSUB 40000:TITLE.LINE$="PLAYER REPORTS":GOSUB 40100:LOCATE 3,THISLOC-1:PRINT TITLE.LINE$;
  102. 7020 LOCATE 9,30:PRINT "1. INDIVIDUAL PLAYER";:LOCATE 11,30:PRINT "2. ALL PLAYERS";:LOCATE 13,30:PRINT "3. RETURN TO MAIN MENU";:LOCATE 17,30:PRINT "YOUR CHOICE _";
  103. 7030 CH$=INKEY$:IF CH$="" THEN 7030 ELSE IF CH$="3" THEN 200
  104. 7060 IF VAL(CH$)>0 AND VAL(CH$)<3 THEN GOSUB 31200
  105. 7080 ON VAL(CH$) GOTO 7200,7400,200
  106. 7090 GOTO 7030
  107. 7200 IF SP$="P" THEN 7300
  108. 7210 GOSUB 30600:BOX$="22012478":GOSUB 41200:LOCATE 23,30:PRINT "ANOTHER PLAYER? (Y/N)";
  109. 7220 GOSUB 41300:IF YN$<>"Y" THEN 200 ELSE 7210
  110. 7300 CLS:GOSUB 40500:GOSUB 30600
  111. 7310 GOSUB 40400:TITLE.LINE$="HIT <RETURN> TO PRINT":N%=23:GOSUB 41500:LOCATE 23,THISLOC-2:PRINT TITLE.LINE$;:LINE INPUT;" ";PE$
  112. 7320 TITLE.LINE$="CURRENT STATS FOR "+FINIT$+" "+LASNAME$:GOSUB 42000:LPRINT:GOSUB 42100:LPRINT:LPRINT:LPRINT:N%=23:GOSUB 41500:TITLE.LINE$="DO YOU WANT A NEW PAGE? (Y/N)":GOSUB 40100:LOCATE 23,THISLOC-1:PRINT TITLE.LINE$;:GOSUB 41300
  113. 7330 IF YN$="Y" THEN LPRINT CHR$(12)
  114. 7340 N%=23:GOSUB 41500:TITLE.LINE$="ANOTHER PLAYER? (Y/N)":GOSUB 40100:LOCATE 23,THISLOC-1:PRINT TITLE.LINE$;:GOSUB 41300
  115. 7350 IF YN$="Y" THEN 7300 ELSE 200
  116. 7400 IF SP$="P" THEN 7600
  117. 7410 LOCATE 22,2:PRINT WIPE$;:TITLE.LINE$="USE (C)urrent INDEX OR (P)layer INDEX? (C/P)":GOSUB 40100:LOCATE 22,THISLOC-1:PRINT TITLE.LINE$;
  118. 7420 CP$=INKEY$:IF CP$="" THEN 7420 ELSE IF CP$="c" THEN CP$="C" ELSE IF CP$="p" THEN CP$="P"
  119. 7430 IF CP$<>"P" AND CP$<>"C" THEN 7420
  120. 7440 REM IF CP$="C" AND SWFLAG=0 THEN GOSUB 24400
  121. 7450 REM IF CP$="P" AND SWFLAG=1 THEN GOSUB 24500
  122. 7460 GOSUB 43500
  123. 7599 '**********  PRINT ALL THE PLAYERS STATS  **********
  124. 7600 LOCATE 23,2:PRINT WIPE$;:TITLE.LINE$="USE (C)urrent INDEX OR (P)layer INDEX? (C/P)":GOSUB 40100:LOCATE 23,THISLOC-1:PRINT TITLE.LINE$;
  125. 7610 CP$=INKEY$:IF CP$="" THEN 7610 ELSE IF CP$="c" THEN CP$="C" ELSE IF CP$="p" THEN CP$="P"
  126. 7620 IF CP$<>"C" AND CP$<>"P" THEN 7610
  127. 7630 LOCATE 22,1:PRINT MID.MENU$;:N%=23:GOSUB 41500:LOCATE 23,3:LINE INPUT;"REPORT TITLE: ";REPORT.TITLE$:IF LEN(REPORT.TITLE$)>45 THEN REPORT.TITLE$=LEFT$(REPORT.TITLE$,45)
  128. 7640 GOSUB 40400:TITLE.LINE$="HIT <RETURN> TO PRINT":GOSUB 40100:N%=23:GOSUB 41500:LOCATE 23,THISLOC-2:PRINT TITLE.LINE$;:LINE INPUT;" ";PE$:TITLE.LINE$=REPORT.TITLE$
  129. 7650 GOSUB 44500
  130. 7999 '**********  SORT THE STATS  **********
  131. 8000 CLS:GOSUB 40000:TITLE.LINE$="SORT YOUR STATS":GOSUB 40100:LOCATE 3,THISLOC-1:PRINT TITLE.LINE$;
  132. 8020 LOCATE 9,30:PRINT "1. BY BATTING AVERAGE";:LOCATE 10,30:PRINT "2. BY HITS";:LOCATE 11,30:PRINT "3. BY HOME RUNS";:LOCATE 12,30:PRINT "4. BY RBI'S";:LOCATE 13,30:PRINT "5. BY RUNS SCORED";:LOCATE 14,30:PRINT "6. BY ON-BASE PCT."
  133. 8040 CH$=INKEY$:IF CH$="" THEN 8040 ELSE IF CH$="7" THEN 200
  134. 8050 IF VAL(CH$)< 1 OR VAL(CH$)>7 THEN 8040                                  
  135. 8060 IF VAL(CH$)=7 THEN 200
  136. 8090 LOCATE 22,5:PRINT "ONE MOMENT, PLEASE, WHILE I SORT THE STATS";
  137. 8100 F$=NF$+".PLY":OPEN F$ AS 1 LEN=47:FIELD 1, 14 AS EN$, 1 AS FI$, 2 AS TM$, 2 AS AB$, 2 AS HIT$, 4 AS AVG$, 2 AS RBI$, 2 AS HR$, 4 AS OBP$, 2 AS RN$, 2 AS ER$, 2 AS BB$, 2 AS SO$, 2 AS B1$, 2 AS B2$, 2 AS B3$
  138. 8110 FOR VB=1 TO NUMBER.OF.PLAYER
  139. 8120 GET #1, VB
  140. 8130 LASNAME$=EN$:FINIT$=FI$:TM=CVI(TM$):AB=CVI(AB$):HIT=CVI(HIT$):AVG=CVS(AVG$):RBI=CVI(RBI$):HR=CVI(HR$):OBP=CVS(OBP$):RN=CVI(RN$):ERZ=CVI(ER$):BB=CVI(BB$):SO=CVI(SO$):B1=CVI(B1$):B2=CVI(B2$):B3=CVI(B3$)
  141. 8140 IF CH$="1" THEN CURRENT.INDEX$(VB)=MID$(STR$(AVG*1000),2)+"/"+STR$(VB):GOTO 8200
  142. 8150 IF CH$="6" THEN CURRENT.INDEX$(VB)=MID$(STR$(OBP*1000),2)+"/"+STR$(VB):GOTO 8200
  143. 8160 IF CH$="3" THEN CURRENT.INDEX$(VB)=MID$(STR$(HR),2)+"/"+STR$(VB):GOTO 8195
  144. 8170 IF CH$="4" THEN CURRENT.INDEX$(VB)=MID$(STR$(RBI),2)+"/"+STR$(VB):GOTO 8195
  145. 8180 IF CH$="5" THEN CURRENT.INDEX$(VB)=MID$(STR$(RN),2)+"/"+STR$(VB)
  146. 8190 IF CH$="2" THEN CURRENT.INDEX$(VB)=MID$(STR$(HIT),2)+"/"+STR$(VB)
  147. 8195 VCI=VAL(CURRENT.INDEX$(VB)):IF VCI<10 THEN CURRENT.INDEX$(VB)="00"+CURRENT.INDEX$(VB) ELSE IF VCI>9 AND VCI<100 THEN CURRENT.INDEX$(VB)="0"+CURRENT.INDEX$(VB)
  148. 8200 NEXT VB:CLOSE #1:GOSUB 24100
  149. 8205 IF STARTING.SORT=0 THEN STARTING.SORT=1:RETURN
  150. 8210 N%=22:GOSUB 41500:LOCATE 22,5:PRINT "SORT COMPLETED. ";:INPUT "HIT <RETURN> FOR MAIN MENU";PE:GOTO 200
  151. 9999 '**********  TEAM REPORTS MENU  **********
  152. 10000 ALLFLAG=0:CLS:GOSUB 40000:TITLE.LINE$="TEAM REPORTS":GOSUB 40100:LOCATE 3,THISLOC-1:PRINT TITLE.LINE$;
  153. 10020 LOCATE 9,30:PRINT "1. LIST ALL TEAMS";:LOCATE 11,30:PRINT "2. TEAM WITH PLAYERS";:LOCATE 13,30:PRINT "3. ALL TEAMS WITH PLAYERS";:LOCATE 15,30:PRINT "4. RETURN TO MENU";:LOCATE 17,30:PRINT "YOUR CHOICE _";
  154. 10030 CH$=INKEY$:IF CH$="" THEN 10030
  155. 10040 ON VAL(CH$) GOTO 10200,10500,10900,200
  156. 10050 GOTO 10030
  157. 10199 '**********  LIST ALL TEAMS  **********
  158. 10200 GOSUB 31200:IF SP$="P" THEN 10300
  159. 10210 CLS:GOSUB 40200:LOCATE 2,2:PRINT TEAM.LINE$;
  160. 10220 FOR N=1 TO 12:IF LEFT$(TEAM$(N),1)="-" THEN 10280
  161. 10230 LOCATE N+4,2:PRINT LEFT$(TEAM$(N),17);:PRINT TAB(19) USING FR2$;N;
  162. 10240 PRINT TAB(23) USING FR3$;TAT.BATS(N);:PRINT TAB(27) USING FR3$;THITS(N);:PRINT TAB(31) USING " .###";TAVG(N);:PRINT TAB(38) USING FR2$;THR(N);
  163. 10250 PRINT TAB(40) USING " .###";TOBP(N);:PRINT TAB(46) USING FR3$;TRUNS(N);:PRINT TAB(50) USING FR3$;TRBI(N);
  164. 10260 PRINT TAB(54) USING FR3$;TERRORS(N);:PRINT TAB(58) USING FR3$;TBB(N);:PRINT TAB(62) USING FR3$;TK(N);:PRINT TAB(66) USING FR3$;T1B(N);:PRINT TAB(70) USING FR3$;T2B(N);:PRINT TAB(74) USING FR3$;T3B(N);
  165. 10270 NEXT N
  166. 10280 TITLE.LINE$="HIT <RETURN> TO CONTINUE":GOSUB 40100:LOCATE 22, THISLOC-1:PRINT TITLE.LINE$;:LINE INPUT PE$:GOTO 10000
  167. 10299 '**********  PRINT ALL TEAMS  **********
  168. 10300 GOSUB 31300
  169. 10310 LPRINT:LPRINT:LPRINT:LPRINT HEADER.LINE$:LPRINT TAB(REPTAB) REPORT$:LPRINT HEADER.LINE$:LPRINT TAB(2) TEAM.LINE$:LPRINT HEADER.LINE$:LPRINT
  170. 10320 FOR N=1 TO 12:IF LEFT$(TEAM$(N),1)="-" THEN 10280
  171. 10330 LPRINT TAB(2) LEFT$(TEAM$(N),17);:LPRINT TAB(19) USING FR2$;N;
  172. 10340 LPRINT TAB(23) USING FR3$;TAT.BATS(N);:LPRINT TAB(27) USING FR3$;THITS(N);:LPRINT TAB(31) USING " .###";TAVG(N);:LPRINT TAB(38) USING FR2$;THR(N);
  173. 10350 LPRINT TAB(40) USING " .###";TOBP(N);:LPRINT TAB(46) USING FR3$;TRUNS(N);:LPRINT TAB(50) USING FR3$;TRBI(N);
  174. 10360 LPRINT TAB(54) USING FR3$;TERRORS(N);:LPRINT TAB(58) USING FR3$;TBB(N);:LPRINT TAB(62) USING FR3$;TK(N);:LPRINT TAB(66) USING FR3$;T1B(N);:LPRINT TAB(70) USING FR3$;T2B(N);:LPRINT TAB(74) USING FR3$;T3B(N)
  175. 10370 NEXT N
  176. 10380 LPRINT CHR$(12):GOTO 10000
  177. 10499 '**********  DISPLAY TEAM AND PLAYERS  **********
  178. 10500 GOSUB 31200:CLS:GOSUB 41400:LOCATE 10,5:INPUT "ENTER THE NUMBER OF THE TEAM YOU WANT (1-12)";TEAM.WANTED:IF TEAM.WANTED < 1 OR TEAM.WANTED > 12 THEN SOUND 200,5:LOCATE 10,5:PRINT STRING$(70,32):GOTO 10500
  179. 10505 IF SP$="P" THEN 10700
  180. 10510 CLS:GOSUB 40200:TITLE.LINE$="STATS FOR PLAYERS ON THE "+TEAM$(TEAM.WANTED):GOSUB 40100:LOCATE 2,THISLOC:PRINT TITLE.LINE$;:LOCATE 4,2:PRINT TEAM.LINE$;:LOCATE 5,1:PRINT MID.MENU$;
  181. 10520 DISROW=6
  182. 10530 F$=NF$+".PLY":OPEN F$ AS 1 LEN=47:FIELD 1, 14 AS EN$, 1 AS FI$, 2 AS TM$, 2 AS AB$, 2 AS HIT$, 4 AS AVG$, 2 AS RBI$, 2 AS HR$, 4 AS OBP$, 2 AS RN$, 2 AS ER$, 2 AS BB$, 2 AS SO$, 2 AS B1$, 2 AS B2$, 2 AS B3$
  183. 10540 FOR K=1 TO NUMBER.OF.PLAYER                                            
  184. 10550 GET #1, K
  185. 10560 LASNAME$=EN$:FINIT$=FI$:TM=CVI(TM$):AB=CVI(AB$):HIT=CVI(HIT$):AVG=CVS(AVG$):RBI=CVI(RBI$):HR=CVI(HR$):OBP=CVS(OBP$):RN=CVI(RN$):ERZ=CVI(ER$):BB=CVI(BB$):SO=CVI(SO$):B1=CVI(B1$):B2=CVI(B2$):B3=CVI(B3$)
  186. 10570 IF AVG>.9990001 THEN FR5$="#.###" ELSE FR5$=" .###"
  187. 10580 IF TM=TEAM.WANTED THEN GOSUB 30200:DISROW=DISROW+1:IF DISROW>18 THEN TEAM.FLAG=1:GOSUB 43600:TEAM.FLAG=0:DISROW=6:IF YN$<>"Y" THEN 200 ELSE ZIP$="06022076":GOSUB 52000:LOCATE 23,2:PRINT WIPE$;
  188. 10590 NEXT K:CLOSE#1
  189. 10600 LOCATE 18,2:PRINT "TOTALS";
  190. 10610 PRINT TAB(23) USING FR3$;TAT.BATS(TEAM.WANTED);:PRINT TAB(27) USING FR3$;THITS(TEAM.WANTED);:PRINT TAB(31) USING " .###";TAVG(TEAM.WANTED);:PRINT TAB(38) USING FR2$;THR(TEAM.WANTED);
  191. 10620 PRINT TAB(40) USING " .###";TOBP(TEAM.WANTED);:PRINT TAB(46) USING FR3$;TRUNS(TEAM.WANTED);:PRINT TAB(50) USING FR3$;TRBI(TEAM.WANTED);
  192. 10630 PRINT TAB(54) USING FR3$;TERRORS(TEAM.WANTED);:PRINT TAB(58) USING FR3$;TBB(TEAM.WANTED);:PRINT TAB(62) USING FR3$;TK(TEAM.WANTED);:PRINT TAB(66) USING FR3$;T1B(TEAM.WANTED);
  193. 10640 PRINT TAB(70) USING FR3$;T2B(TEAM.WANTED);:PRINT TAB(74) USING FR3$;T3B(TEAM.WANTED);
  194. 10650 LOCATE 22,2:PRINT WIPE$;
  195. 10660 LOCATE 22,20:PRINT "ANOTHER TEAM? (Y/N)";:GOSUB 41300:IF YN$="Y" THEN 10500 ELSE 10000
  196. 10699 '**********  PRINT TEAM AND PLAYERS  **********
  197. 10700 CLS:GOSUB 31320
  198. 10710 LPRINT:LPRINT:LPRINT:LPRINT HEADER.LINE$:TITLE.LINE$="STATS FOR THE "+TEAM$(TEAM.WANTED)+DATE$:GOSUB 40100:LPRINT TAB(THISLOC -1) TITLE.LINE$:LPRINT HEADER.LINE$:LPRINT TAB(2) TEAM.LINE$:LPRINT HEADER.LINE$:LPRINT
  199. 10730 F$=NF$+".PLY":OPEN F$ AS 1 LEN=47:FIELD 1, 14 AS EN$, 1 AS FI$, 2 AS TM$, 2 AS AB$, 2 AS HIT$, 4 AS AVG$, 2 AS RBI$, 2 AS HR$, 4 AS OBP$, 2 AS RN$, 2 AS ER$, 2 AS BB$, 2 AS SO$, 2 AS B1$, 2 AS B2$, 2 AS B3$
  200. 10740 FOR K=1 TO NUMBER.OF.PLAYER
  201. 10750 GET #1, K
  202. 10760 LASNAME$=EN$:FINIT$=FI$:TM=CVI(TM$):AB=CVI(AB$):HIT=CVI(HIT$):AVG=CVS(AVG$):RBI=CVI(RBI$):HR=CVI(HR$):OBP=CVS(OBP$):RN=CVI(RN$):ERZ=CVI(ER$):BB=CVI(BB$):SO=CVI(SO$):B1=CVI(B1$):B2=CVI(B2$):B3=CVI(B3$)
  203. 10770 IF AVG>.9990001 THEN FR5$="#.###" ELSE FR5$=" .###"
  204. 10780 IF TM=TEAM.WANTED THEN GOSUB 42100
  205. 10790 NEXT K:CLOSE#1:LPRINT:LPRINT
  206. 10800 LPRINT TAB(2) "TOTALS";
  207. 10810 LPRINT TAB(23) USING FR3$;TAT.BATS(TEAM.WANTED);:LPRINT TAB(27) USING FR3$;THITS(TEAM.WANTED);:LPRINT TAB(31) USING " .###";TAVG(TEAM.WANTED);:LPRINT TAB(38) USING FR2$;THR(TEAM.WANTED);
  208. 10820 LPRINT TAB(40) USING " .###";TOBP(TEAM.WANTED);:LPRINT TAB(46) USING FR3$;TRUNS(TEAM.WANTED);:LPRINT TAB(50) USING FR3$;TRBI(TEAM.WANTED);
  209. 10830 LPRINT TAB(54) USING FR3$;TERRORS(TEAM.WANTED);:LPRINT TAB(58) USING FR3$;TBB(TEAM.WANTED);:LPRINT TAB(62) USING FR3$;TK(TEAM.WANTED);:LPRINT TAB(66) USING FR3$;T1B(TEAM.WANTED);
  210. 10840 LPRINT TAB(70) USING FR3$;T2B(TEAM.WANTED);:LPRINT TAB(74) USING FR3$;T3B(TEAM.WANTED)
  211. 10850 LPRINT CHR$(12):IF ALLFLAG=1 THEN RETURN ELSE LOCATE 22,2:PRINT WIPE$;
  212. 10860 LOCATE 22,20:PRINT "ANOTHER TEAM? (Y/N)";:GOSUB 41300:IF YN$="Y" THEN 10500 ELSE 10000
  213. 10900 CLS:TITLE.LINE$="PRINT ALL TEAMS WITH PLAYERS. ARE YOU SURE (Y/N)":GOSUB 40100:LOCATE 22,THISLOC-1:PRINT TITLE.LINE$;:GOSUB 41300:IF YN$<>"Y" THEN 10000
  214. 10910 LOCATE 22,2:PRINT WIPE$;:GOSUB 31320
  215. 10920 ALLFLAG=1
  216. 10930 LPRINT CHR$(12):FOR TEAM.WANTED=1 TO 12
  217. 10940 IF LEFT$(TEAM$(TEAM.WANTED),1)="-" THEN 10000
  218. 10950 GOSUB 10710
  219. 10960 NEXT TEAM.WANTED
  220. 10970 GOTO 10000
  221. 19999 '**********  RANDOM PLAYER GENERATOR  **********
  222. 20000 W=1:OPEN "RPG" FOR INPUT AS #1
  223. 20010 IF EOF(1) THEN 21000
  224. 20020 INPUT #1, LN$(W):INPUT #1,KF$(W):KT(W)=INT(RND*13)
  225. 20030 GOTO 20010
  226. 23999 '**********  SORT PLAYER INDEX  **********
  227. 24000 N%=NUMBER.OF.PLAYER:FOR Q=1 TO NUMBER.OF.PLAYER:AA$(Q)=PLAYER.INDEX$(Q):NEXT
  228. 24050 DEF SEG: CALL LSORT(AA$(1),N%)
  229. 24060 FOR Q=1 TO NUMBER.OF.PLAYER:PLAYER.INDEX$(Q)=AA$(Q):NEXT:RETURN
  230. 24099 '**********  SORT CURRENT INDEX  **********
  231. 24100 N%=NUMBER.OF.PLAYER:FOR Q=1 TO NUMBER.OF.PLAYER:AA$(Q)=CURRENT.INDEX$(Q):NEXT
  232. 24150 DEF SEG: CALL LSORT(AA$(1),N%)
  233. 24160 FOR Q=1 TO NUMBER.OF.PLAYER:CURRENT.INDEX$(Q)=AA$(Q):NEXT:RETURN
  234. 24399 '**********  SWAP CURRENT.INDEX FOR PLAYER.INDEX  **********
  235. 24400 FOR J=1 TO NUMBER.OF.PLAYER:SWAP PLAYER.INDEX$(J),CURRENT.INDEX$(J):NEXT:SWFLAG=1:RETURN
  236. 24499 '**********  RETURN PLAYER AND CURRENT INDEXES TO NORMAL  **********
  237. 24500 RETURN:FOR J=1 TO NUMBER.OF.PLAYER:SWAP PLAYER.INDEX$(J),CURRENT.INDEX$(J):NEXT:SWFLAG=0:RETURN
  238. 24999 '********** POKE IN MLSORT PROGRAM **********
  239. 25000 CLS
  240. 25010 DEF SEG
  241. 25020 CHECKSUM = 0
  242. 25030 ADDRESS = &HFF00
  243. 25040 READ MLDATA
  244. 25050 WHILE MLDATA <> -1
  245. 25060 POKE ADDRESS,MLDATA
  246. 25070 CHECKSUM = CHECKSUM + MLDATA
  247. 25080 ADDRESS = ADDRESS + 1
  248. 25090 READ MLDATA
  249. 25100 WEND
  250. 25110 RETURN
  251. 28000 FOR THIS.NUMBER=1 TO NUMBER.OF.PLAYER
  252. 28010 GOSUB 31000:RBI=INT(HIT/3)
  253. 28020 GOSUB 30000:PUT #1, THIS.NUMBER:CLOSE #1
  254. 28030 TRBI(TM)=TRBI(TM)+RBI
  255. 28040 NEXT
  256. 28050 GOSUB 32000
  257. 28060 PRINT "DONE":STOP
  258. 29999 '**********  OPEN FILE AND STORE CURRENT PLAYER STATS  **********
  259. 30000 F$=NF$+".PLY":OPEN F$ AS #1 LEN=47:FIELD 1, 14 AS EN$, 1 AS FI$, 2 AS TM$, 2 AS AB$, 2 AS HIT$, 4 AS AVG$, 2 AS HR$, 2 AS RBI$, 4 AS OBP$, 2 AS RN$, 2 AS ER$, 2 AS BB$, 2 AS SO$, 2 AS B1$, 2 AS B2$, 2 AS B3$
  260. 30030 LSET EN$=LASNAME$:LSET FI$=FINIT$:LSET TM$=MKI$(TM):LSET AB$=MKI$(AB):LSET HIT$=MKI$(HIT):LSET AVG$=MKS$(AVG):LSET HR$=MKI$(HR):LSET RBI$=MKI$(RBI)
  261. 30040 LSET OBP$=MKS$(OBP):LSET RN$=MKI$(RN):LSET ER$=MKI$(ERZ):LSET BB$=MKI$(BB):LSET SO$=MKI$(SO):LSET B1$=MKI$(B1):LSET B2$=MKI$(B2)
  262. 30050 LSET B3$=MKI$(B3):RETURN
  263. 30199 '**********  DISPLAY CURRENT STATS LINE  **********
  264. 30200 LOCATE DISROW,2:PRINT EN$+" "+FINIT$;:PRINT TAB(19) USING FR2$;TM;:PRINT TAB(23) USING FR3$;AB;:PRINT TAB(27) USING FR3$;HIT;:PRINT TAB(31) USING FR5$;AVG;:PRINT TAB(38) USING FR2$;HR;
  265. 30210 PRINT TAB(40) USING FR5$;OBP;:PRINT TAB(46) USING FR3$;RN;:PRINT TAB(50) USING FR3$;RBI;
  266. 30220 PRINT TAB(54) USING FR3$;ERZ;:PRINT TAB(58) USING FR3$;BB;:PRINT TAB(62) USING FR3$;SO;:PRINT TAB(66) USING FR3$;B1;:PRINT TAB(70) USING FR3$;B2;:PRINT TAB(74) USING FR3$;B3;
  267. 30230 RETURN
  268. 30399 '**********  ENTER PLAYER STATS  **********
  269. 30400 TITLE.LINE$="LET'S ENTER STATS FOR THE LATEST GAME":GOSUB 40100:LOCATE 8,THISLOC-1:PRINT TITLE.LINE$;
  270. 30410 LOCATE 10,10:INPUT "AT BATS: ",THIS.AB:LOCATE 11,10:INPUT "HITS: ",THIS.HIT:LOCATE 12,10:INPUT "HOME RUNS: ",THIS.HR:LOCATE 13,10:INPUT "RUNS SCORED: ",THIS.RN
  271. 30420 LOCATE 14,10:INPUT "ERRORS: ",THIS.ERZ:LOCATE 15,10:INPUT "WALKS: ",THIS.BB:LOCATE 16,10:INPUT "STRIKEOUTS: ",THIS.SO:LOCATE 17,10:INPUT "SINGLES: ",THIS.B1
  272. 30430 LOCATE 18,10:INPUT "DOUBLES: ",THIS.B2:LOCATE 19,10:INPUT "TRIPLES: ",THIS.B3:LOCATE 20,10:INPUT "RBI'S: ",THIS.RBI
  273. 30440 TITLE.LINE$="IS THIS INFORMATION CORRECT? (Y/N)":GOSUB 40100:LOCATE 22,THISLOC-1:PRINT TITLE.LINE$:GOSUB 41300
  274. 30450 IF YN$<>"Y" THEN TITLE.LINE$="OKAY, LET'S TRY AGAIN":GOSUB 40100:GOSUB 41100:LOCATE 22,THISLOC-1:PRINT TITLE.LINE$:ZIP$="10011978":GOSUB 52000:GOTO 30410
  275. 30460 RETURN
  276. 30599 '**********  ASK FOR A PLAYER BY NAME  **********
  277. 30600 CLS:LOCATE 6,5:LINE INPUT"PLAYER'S LAST NAME: ";LASNAME$
  278. 30610 LOCATE 8,5:LINE INPUT"PLAYER'S 1ST  INIT: ";FINIT$:IF LEN(FINIT$)>1 THEN PRINT CHR$(7):N%=8:GOSUB 41500
  279. 30620 SRCH.NAME$=LASNAME$+FINIT$:SRNLEN=LEN(SRCH.NAME$)
  280. 30630 FOR K=1 TO NUMBER.OF.PLAYER
  281. 30640 IF LEFT$(PLAYER.INDEX$(K),SRNLEN)<>SRCH.NAME$ THEN 30730
  282. 30650 ENTRY.LOC=INSTR(PLAYER.INDEX$(K),"/")+2:THIS.NUMBER=VAL(MID$(PLAYER.INDEX$(K),ENTRY.LOC))
  283. 30660 GOSUB 31000
  284. 30670 LOCATE 10,5:PRINT "DO YOU WANT "+FIT$+" "+EN$+" ON THE "+TEAM$(TM)+" (Y/N)";
  285. 30680 GOSUB 41300
  286. 30690 IF YN$<>"Y" THEN 30730
  287. 30700 CLS:TITLE.LINE$="HERE ARE THE CURRENT STATS":GOSUB 40100:BOX$="01010678":GOSUB 41200:LOCATE 3,1:PRINT MID.MENU$;:LOCATE 2,THISLOC-1:PRINT TITLE.LINE$:LOCATE 4,2:PRINT DISPLAY.LINE$
  288. 30710 DISROW=5:GOSUB 30200
  289. 30720 RETURN
  290. 30730 NEXT K
  291. 30740 LOCATE 12,5:PRINT "CAN'T FIND "+FIT$+" "+EN$+" WANT TO TRY AGAIN? (Y/N)";
  292. 30750 GOSUB 41300:IF YN$<>"Y" THEN 7000
  293. 30760 GOTO 30600
  294. 30999 '**********  OPEN FILE AND GET CURRENT PLAYER STATS  **********
  295. 31000 F$=NF$+".PLY":OPEN F$ AS 1 LEN=47:FIELD 1, 14 AS EN$, 1 AS FI$, 2 AS TM$, 2 AS AB$, 2 AS HIT$, 4 AS AVG$, 2 AS RBI$, 2 AS HR$, 4 AS OBP$, 2 AS RN$, 2 AS ER$, 2 AS BB$, 2 AS SO$, 2 AS B1$, 2 AS B2$, 2 AS B3$
  296. 31030 GET #1, THIS.NUMBER
  297. 31035 LASNAME$=EN$:FINIT$=FI$:TM=CVI(TM$):AB=CVI(AB$):HIT=CVI(HIT$):AVG=CVS(AVG$):RBI=CVI(RBI$):HR=CVI(HR$):OBP=CVS(OBP$):RN=CVI(RN$):ERZ=CVI(ER$):BB=CVI(BB$):SO=CVI(SO$):B1=CVI(B1$):B2=CVI(B2$):B3=CVI(B3$)
  298. 31040 CLOSE #1
  299. 31050 IF AVG>.9990001 THEN FR5$="#.###" ELSE FR5$=" .###"
  300. 31060 RETURN
  301. 31099 '**********  SAVE TEAM STATS  **********
  302. 31199 '**********  SCREEN OR PRINTER?  **********
  303. 31200 TITLE.LINE$="SCREEN OR PRINTER? (S/P)":GOSUB 40100:LOCATE 22,2:PRINT WIPE$;:LOCATE 22,THISLOC-1:PRINT TITLE.LINE$;
  304. 31210 SP$=INKEY$:IF SP$="" THEN 31210
  305. 31220 IF SP$="s" THEN SP$="S" ELSE IF SP$="p" THEN SP$="P"
  306. 31230 IF SP$<>"S" AND SP$<>"P" THEN 31210
  307. 31240 RETURN
  308. 31299 '**********  ENTER A PRINTOUT TITLE  **********
  309. 31300 LOCATE 22,2:PRINT WIPE$;:LOCATE 22,2:LINE INPUT;"ENTER A TITLE: ";TITLE.LINE$:IF LEN(TITLE.LINE$)>50 THEN TITLE.LINE$=LEFT$(TITLE.LINE$,50)
  310. 31310 TITLE.LINE$=TITLE.LINE$+"  "+DATE$:GOSUB 40100:REPORT$=TITLE.LINE$:REPTAB=THISLOC-1
  311. 31320 LOCATE 22,2:PRINT WIPE$;:TITLE.LINE$="PREPARE PRINTER AND HIT <ENTER>":GOSUB 40100:LOCATE 22,THISLOC-1:PRINT TITLE.LINE$;:LINE INPUT PE$
  312. 31330 RETURN
  313. 31999 '**********  SAVE TEAM DATA  **********
  314. 32000 F$=NF$+".TMS":OPEN F$ FOR OUTPUT AS 1
  315. 32010 FOR N=1 TO 12:
  316. 32030 WRITE #1, TEAM$(N),TAT.BATS(N),THITS(N),TAVG(N),TRBI(N),TRUNS(N),TBB(N),TK(N),TERRORS(N), TOBP(N), THR(N), T1B(N), T2B(N), T3B(N)
  317. 32040 NEXT:CLOSE #1:RETURN
  318. 32099 '**********  LOAD TEAM STATS  **********
  319. 32100 F$=NF$+".TMS":OPEN F$ FOR INPUT AS 1
  320. 32110 FOR N=1 TO 12:
  321. 32130 INPUT #1, TEAM$(N),TAT.BATS(N),THITS(N),TAVG(N),TRBI(N),TRUNS(N),TBB(N),TK(N),TERRORS(N), TOBP(N), THR(N), T1B(N), T2B(N), T3B(N)
  322. 32140 NEXT N:CLOSE #1:RETURN
  323. 32199 '**********  DRAW FULL DISPLAY SCREEN  **********
  324. 39999 '**********  REM DRAW MAIN MENU SCREEN  **********
  325. 40000 CLS:PRINT TOP.MENU$:FOR N1%=2 TO 4:LOCATE N1%,1:PRINT"║";:LOCATE N1%,78:PRINT"║";:NEXT:LOCATE 5,1:PRINT MID.MENU$;:FOR N1%=6 TO 19:LOCATE N1%,1:PRINT P$;:LOCATE N1%,78:PRINT P$;:NEXT:LOCATE 20,1:PRINT MID.MENU$;
  326. 40010 FOR N1%=21 TO 23:LOCATE N1%,1:PRINT P$;:LOCATE N1%,78:PRINT P$;:NEXT:LOCATE 24,1:PRINT BOTTOM.MENU$;:RETURN
  327. 40099 '**********  REM FIND LOCATION OF CENTERED TITLE  **********
  328. 40100 THISLOC=(80-LEN(TITLE.LINE$))/2:RETURN
  329. 40199 '**********  REM STATISTICAL DISPLAY SCREEN  **********
  330. 40200 CLS:PRINT TOP.MENU$:LOCATE 2,1:PRINT"║";:LOCATE 2,78:PRINT"║";:LOCATE 3,1:PRINT MID.MENU$;:FOR N1%=4 TO 20:LOCATE N1%,1:PRINT P$;:LOCATE N1%,78:PRINT P$;:NEXT:LOCATE 21,1:PRINT MID.MENU$;
  331. 40210 FOR N1%=22 TO 23:LOCATE N1%,1:PRINT P$;:LOCATE N1%,78:PRINT P$;:NEXT:LOCATE 24,1:PRINT BOTTOM.MENU$;:RETURN
  332. 40299 '**********  TOP AND BOTTOM BOXES  **********
  333. 40300 CLS:PRINT TOP.MENU$:FOR N1%=2 TO 4:LOCATE N1%,1:PRINT"║";:LOCATE N1%,78:PRINT"║";:NEXT:LOCATE 5,1:PRINT BOTTOM.MENU$;
  334. 40305 RETURN
  335. 40310 LOCATE 20,1:PRINT TOP.MENU$;:FOR N1%=21 TO 23:LOCATE N1%,1:PRINT"║";:LOCATE N1%,78:PRINT"║";:NEXT:LOCATE 24,1:PRINT BOTTOM.MENU$;
  336. 40320 RETURN
  337. 40399 '**********  DRAW BOTTOM BOX  **********
  338. 40400 BOX$="22012478":GOSUB 41200:N%=23:GOSUB 41500:RETURN
  339. 40499 '**********  INPUT TODAY'S DATE  **********
  340. 40500 IF DFLAG=1 THEN RETURN
  341. 40510 GOSUB 40400:LOCATE 23,10:LINE INPUT;"PLEASE ENTER TODAY'S DATE (MM/DD/YY): ";THIS.DAY$:DATE$=THIS.DAY$:DFLAG=1:RETURN
  342. 40999 '**********  ARE YOU SURE?  **********
  343. 41000 TITLE.LINE$="ARE YOU SURE? (Y/N)":LOCATE 22,THISLOC-3:PRINT TITLE.LINE$;:GOSUB 40100
  344. 41010 SR$=INKEY$:IF SR$="" THEN 41010
  345. 41020 IF SR$="y" THEN SR$="Y" ELSE IF SR$="n" THEN SR$="N"
  346. 41030 IF SR$<>"Y" THEN 200
  347. 41040 RETURN
  348. 41099 '**********  CLEAR LINE 22  **********
  349. 41100 LOCATE 22,2:PRINT SPACE$(75);:RETURN
  350. 41199 '**********  DRAW A BOX AT SPECIFIED COORDINATES  **********
  351. 41200 R1%=VAL(MID$(BOX$,1,2)):C1%=VAL(MID$(BOX$,3,2)):R2%=VAL(MID$(BOX$,5,2)):C2%=VAL(MID$(BOX$,7,2))
  352. 41210 BOXTOP=(C2%-C1%)-1:BOXTOP$=CHR$(201)+STRING$(BOXTOP,205)+CHR$(187):BOXBOTTOM$=CHR$(200)+STRING$(BOXTOP,205)+CHR$(188)
  353. 41220 LOCATE R1%,C1%:PRINT BOXTOP$;:FOR E1%=R1%+1 TO R2%-1:LOCATE E1%,C1%:PRINT P$;:LOCATE E1%,C2%:PRINT P$;:NEXT
  354. 41230 LOCATE R2%,C1%:PRINT BOXBOTTOM$;
  355. 41240 RETURN
  356. 41299 '**********  IS THIS CORRECT?  **********
  357. 41300 YN$=INKEY$:IF YN$="" THEN 41300
  358. 41310 IF YN$="y" THEN YN$="Y" ELSE IF YN$="n" THEN YN$="N"
  359. 41320 IF YN$<>"Y" AND YN$<>"N" THEN 41300
  360. 41330 RETURN
  361. 41399 '**********  DISPLAY TEAMS  **********
  362. 41400 BOX$="17012478":GOSUB 41200
  363. 41410 TITLE.LINE$="THESE ARE YOUR TEAMS":GOSUB 40100:LOCATE 18,THISLOC-1:PRINT TITLE.LINE$;
  364. 41420 TEAM=1:FOR N%=20 TO 23:LOCATE N%,2:PRINT USING TEAMFORMAT$;N%-19;:PRINT TEAM$(N%-19)+" ";:PRINT USING TEAMFORMAT$;N%-15;:PRINT TEAM$(N%-15)+" ";
  365. 41430 PRINT USING TEAMFORMAT$;N%-11;:PRINT TEAM$(N%-11);
  366. 41440 NEXT
  367. 41450 RETURN
  368. 41499 '**********  CLEAR A LINE  **********
  369. 41500 LOCATE N%,2:PRINT STRING$(75,32);:RETURN
  370. 41599 '**********  CLEAR INPUT VARIABLES  **********
  371. 41600 AB=0:HIT=0:AVG=0:BB=0:SO=0:ERZ=0:OBP=0:HR=0:B1=0:B2=0:B3=0:RN=0:RETURN
  372. 41699 '**********  WRITE PLAYER INDEX TO DISK  **********
  373. 41700 OPEN NF$+".PDX" FOR OUTPUT AS 1:FOR W=1 TO THIS.RECORD:PRINT #1,PLAYER.INDEX$(W):NEXT:CLOSE#1:RETURN
  374. 41799 '**********  WRITE CONFIG FILE TO DISK  **********
  375. 41800 OPEN NF$+".CNF" FOR OUTPUT AS 1
  376. 41810 PRINT #1, NUMBER.OF.PLAYER:PRINT #1, CURRENT.TEAM
  377. 41820 CLOSE #1:RETURN
  378. 41899 '**********  READ CONFIG FILE  **********
  379. 41900 OPEN NF$+".CNF" FOR INPUT AS 1
  380. 41910 INPUT #1, NUMBER.OF.PLAYER:INPUT #1, CURRENT.TEAM
  381. 41920 CLOSE#1:RETURN
  382. 41999 '**********  PRINT HEADER LINE  **********
  383. 42000 LPRINT:LPRINT:LPRINT:LPRINT HEADER.LINE$
  384. 42010 TITLE.LINE$=TITLE.LINE$+" "+DATE$:IF PAGE.NUMBER > 0 THEN TITLE.LINE$=TITLE.LINE$+" PAGE "+STR$(PAGE.NUMBER)
  385. 42020 GOSUB 40100:LPRINT TAB(THISLOC-1) TITLE.LINE$:LPRINT HEADER.LINE$:LPRINT TAB(2)DISPLAY.LINE$:LPRINT HEADER.LINE$
  386. 42030 RETURN
  387. 42099 '**********  PRINT STATS LINE  **********
  388. 42100 LPRINT TAB(2) EN$+" "+FINIT$;:LPRINT TAB(19) USING FR2$;TM;:LPRINT TAB(23) USING FR3$;AB;:LPRINT TAB(27) USING FR3$;HIT;:LPRINT TAB(31) USING FR5$;AVG;:LPRINT TAB(38) USING FR2$;HR;
  389. 42110 LPRINT TAB(40) USING FR5$;OBP;:LPRINT TAB(46) USING FR3$;RN;:LPRINT TAB(50) USING FR3$;RBI;:LPRINT TAB(54) USING FR3$;ERZ;:LPRINT TAB(58) USING FR3$;BB;:LPRINT TAB(62) USING FR3$;SO;:LPRINT TAB(66) USING FR3$;B1;
  390. 42120 LPRINT TAB(70) USING FR3$;B2;:LPRINT TAB(74) USING FR3$;B3
  391. 42130 RETURN
  392. 42199 '**********  DRIVE SELECTION  **********
  393. 42200 DR$=INKEY$:IF DR$="" THEN 42200
  394. 42210 IF INSTR("abcdABCD",DR$)=0 THEN 42200
  395. 42220 RETURN
  396. 42299 '**********  ESTABLISH THAT A FILE HAS BEEN CREATED  **********
  397. 42300 IF NF$<>"" THEN RETURN
  398. 42310 CLS:TITLE.LINE$="YOU HAVE NOT LOADED OR CREATED A FILE YET. HIT <RETURN> TO CONTINUE":GOSUB 40100:LOCATE 12,THISLOC-1:PRINT TITLE.LINE$;:LINE INPUT PE$:GOTO 200
  399. 42499 '**********  DO YOU WANT TO QUIT?  **********
  400. 42500 TITLE.LINE$="ARE YOU SURE YOU WANT TO QUIT? (Y/N)"::GOSUB 40100:CLS:LOCATE 12,THISLOC-1:PRINT TITLE.LINE$;:GOSUB 41300:IF YN$<>"Y" THEN 200
  401. 42510 TITLE.LINE$="THANK YOU FOR USING BASEBALL STATKEEPER!":GOSUB 40100:LOCATE 14,THISLOC-1:PRINT TITLE.LINE$:END
  402. 42599 '**********  CHECK FOR MAXIMUM NUMBER OF TEAMS  **********
  403. 42600 IF CURRENT.TEAM < 12 THEN CLS:RETURN
  404. 42610 TITLE.LINE$="YOU HAVE ALLOCATED ALL 12 TEAMS. HIT <RETURN> TO CONTINUE. ":GOSUB 40100:CLS:LOCATE 12,THISLOC-1:PRINT TITLE.LINE$;:LINE INPUT PE$:GOTO 200
  405. 43000 RETURN
  406. 43499 '**********  DISPLAY ALL PLAYERS ON SCREEN  **********
  407. 43500 CLS:GOSUB 40200:LOCATE 2,2:PRINT DISPLAY.LINE$;:DISROW=4:IF CP$="C" THEN START.SEARCH=NUMBER.OF.PLAYER:FINISH.SEARCH=1:SEARCH.INCREMENT=-1
  408. 43505 IF CP$="P" THEN START.SEARCH=1:FINISH.SEARCH=NUMBER.OF.PLAYER:SEARCH.INCREMENT=1
  409. 43510 DISROW=4:FOR K=START.SEARCH TO FINISH.SEARCH STEP SEARCH.INCREMENT
  410. 43520 IF CP$="C" THEN ENTRY.LOC=INSTR(CURRENT.INDEX$(K),"/")+2:THIS.NUMBER=VAL(MID$(CURRENT.INDEX$(K),ENTRY.LOC))
  411. 43525 IF CP$="P" THEN ENTRY.LOC=INSTR(PLAYER.INDEX$(K),"/")+2:THIS.NUMBER=VAL(MID$(PLAYER.INDEX$(K),ENTRY.LOC))
  412. 43530 GOSUB 31000 ' GET THE ENTRY
  413. 43540 GOSUB 30200:DISROW=DISROW+1 ' DISPLAY THE ENTRY AND INCREMENT ROW
  414. 43550 IF DISROW = 20 THEN GOSUB 43600
  415. 43560 NEXT K
  416. 43570 LOCATE 23,2:PRINT WIPE$;:TITLE.LINE$="THAT'S ALL, FOLKS! MORE REPORTS? (Y/N)":GOSUB 40100:LOCATE 23,THISLOC-1:PRINT TITLE.LINE$;:GOSUB 41300
  417. 43580 IF YN$="Y" THEN 7000 ELSE 200
  418. 43600 LOCATE 23,2:PRINT WIPE$:TITLE.LINE$="DO YOU WANT TO CONTINUE? (Y/N)":GOSUB 40100:LOCATE 23,THISLOC-1:PRINT TITLE.LINE$:GOSUB 41300:IF TEAM.FLAG=1 THEN RETURN
  419. 43610 IF YN$="Y" THEN ZIP$="04022076":GOSUB 52000:DISROW=4:LOCATE 23,2:PRINT WIPE$;:RETURN
  420. 43620 GOTO 200
  421. 44000 RETURN
  422. 44499 '**********  PRINT OUT ALL PLAYERS  **********
  423. 44500 LNUMBER=0:PAGE.NUMBER=1:GOSUB 42000:IF CP$="C" THEN START.SEARCH=NUMBER.OF.PLAYER:FINISH.SEARCH=1:SEARCH.INCREMENT=-1
  424. 44505 IF CP$="P" THEN START.SEARCH=1:FINISH.SEARCH=NUMBER.OF.PLAYER:SEARCH.INCREMENT=1
  425. 44510 FOR K=START.SEARCH TO FINISH.SEARCH STEP SEARCH.INCREMENT
  426. 44520 IF CP$="C" THEN ENTRY.LOC=INSTR(CURRENT.INDEX$(K),"/")+2:THIS.NUMBER=VAL(MID$(CURRENT.INDEX$(K),ENTRY.LOC))
  427. 44525 IF CP$="P" THEN ENTRY.LOC=INSTR(PLAYER.INDEX$(K),"/")+2:THIS.NUMBER=VAL(MID$(PLAYER.INDEX$(K),ENTRY.LOC))
  428. 44530 GOSUB 31000 ' GET THE ENTRY
  429. 44540 GOSUB 42100:LNUMBER=LNUMBER+1 'PRINT STATS LINE AND INCREMENT COUNT
  430. 44550 IF LNUMBER=51 THEN LPRINT CHR$(12):PAGE.NUMBER=PAGE.NUMBER+1:GOSUB 42000:LINE.NUMBER=1
  431. 44560 NEXT K:LPRINT CHR$(12)
  432. 44570 LOCATE 23,2:PRINT WIPE$;:TITLE.LINE$="THAT'S ALL, FOLKS! MORE REPORTS? (Y/N)":GOSUB 40100:LOCATE 23,THISLOC-1:PRINT TITLE.LINE$;:GOSUB 41300
  433. 44580 IF YN$="Y" THEN 7000 ELSE 200
  434. 44999 '********** CATCH ERROR AND GO BACK TO MENU **********
  435. 45000 CLOSE#1:CLS:TITLE.LINE$="SORRY, THERE HAS BEEN AN ERROR. HIT ANY KEY FOR MENU":GOSUB 40100:LOCATE 10,THISLOC-1:PRINT TITLE.LINE$;
  436. 45010 IF INKEY$="" THEN 45010 ELSE RESUME 200
  437. 50000 DATA "1. LOAD A FILE","2. CREATE A NEW FILE","3. UPDATE A PLAYER", "4. TEAM ROSTER", "5. ADD A PLAYER", "6. PLAYER REPORTS","7. TEAM REPORTS", "8. SORT YOUR STATS","9. QUIT"
  438. 51000 REM ************* ZIPCLEAR INPUT PARAMETERS ***************************
  439. 51050 DATA&h8B55
  440. 51060 DATA&hB8EC
  441. 51070 DATA&H0600
  442. 51080 DATA&H07B7
  443. 51090 DATA&H768B
  444. 51100 DATA&H8A0C
  445. 51110 DATA&H8B2C
  446. 51120 DATA&HA76
  447. 51130 DATA&HC8A
  448. 51140 DATA&H768B
  449. 51150 DATA&H8A08
  450. 51160 DATA&H8B34
  451. 51170 DATA&H676
  452. 51180 DATA&H148A
  453. 51190 DATA&HCDFE
  454. 51200 DATA&HC9FE
  455. 51210 DATA&HCEFE
  456. 51220 DATA&HCAFE
  457. 51230 DATA&H10CD
  458. 51240 DATA&HCA5D
  459. 51250 DATA&H8
  460. 51260 DATA&H0
  461. 51999 '**********  CLEAR SELECTED SCREEN AREA  **********
  462. 52000 R1% = VAL(MID$(ZIP$,1,2))
  463. 52010 C1% = VAL(MID$(ZIP$,3,2))
  464. 52020 R2% = VAL(MID$(ZIP$,5,2))
  465. 52030 C2% = VAL(MID$(ZIP$,7,2))
  466. 52040 DEF SEG
  467. 52050 SUBRT% = VARPTR(A%(0))
  468. 52060 CALL SUBRT%(R1%,C1%,R2%,C2%)
  469. 52070 RETURN
  470. 53999 '********** ML SORT DATA ***********
  471. 54000 DATA 85,137,229,139,118,6,139,4
  472. 54010 DATA 72,185,3,0,247,225,139,86
  473. 54020 DATA 8,1,208,189,252,254,137,86
  474. 54030 DATA 2,137,70,0,252,41,192,80
  475. 54040 DATA 139,94,0,139,86,2,57,211
  476. 54050 DATA 127,3,233,129,0,135,211,232
  477. 54060 DATA 139,0,118,5,131,195,3,235
  478. 54070 DATA 246,135,211,57,211,126,31,131
  479. 54080 DATA 235,3,232,120,0,114,244,138
  480. 54090 DATA 15,139,71,1,135,211,134,15
  481. 54100 DATA 135,71,1,135,211,136,15,137
  482. 54110 DATA 71,1,135,211,235,214,139,118
  483. 54120 DATA 0,138,4,134,7,136,4,139
  484. 54130 DATA 68,1,135,71,1,137,68,1
  485. 54140 DATA 139,86,0,3,86,2,209,234
  486. 54150 DATA 57,218,114,23,139,70,2,131
  487. 54160 DATA 195,3,137,94,2,131,237,4
  488. 54170 DATA 131,235,6,137,94,0,137,70
  489. 54180 DATA 2,235,21,139,70,0,131,235
  490. 54190 DATA 3,137,94,0,131,237,4,131
  491. 54200 DATA 195,6,137,94,2,137,70,0
  492. 54210 DATA 88,64,80,233,114,255,88,72
  493. 54220 DATA 124,7,80,131,197,4,233,103
  494. 54230 DATA 255,93,202,4,0,139,118,0
  495. 54240 DATA 181,0,138,12,139,116,1,58
  496. 54250 DATA 15,118,2,138,15,139,127,1
  497. 54260 DATA 243,166,116,1,195,139,126,0
  498. 54270 DATA 138,13,58,15,195,-1
  499.